package com.zenithmind.chat.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import com.zenithmind.chat.enums.MessageType;
import com.zenithmind.chat.enums.MessageStatus;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 私聊消息实体类 - 遵循单一职责原则
 * 只负责私聊消息的核心内容，媒体信息等分离到专门的实体类
 *
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_private_message")
public class ChatPrivateMessage extends BaseEntity {

    /**
     * 会话ID
     */
    private String sessionId;

    /**
     * 发送者ID
     */
    private String senderId;

    /**
     * 接收者ID
     */
    private String receiverId;

    /**
     * 消息类型
     */
    private MessageType messageType;

    /**
     * 消息内容
     */
    private String content;

    /**
     * 回复的消息ID
     */
    private String replyToId;

    /**
     * 消息状态
     */
    private MessageStatus status;

    /**
     * 是否已读（0-未读，1-已读）
     */
    private Integer isRead;

    /**
     * 已读时间
     */
    private LocalDateTime readTime;

    /**
     * 发送时间
     */
    private LocalDateTime sendTime;

    /**
     * 客户端消息ID（用于去重）
     */
    private String clientMsgId;

    /**
     * 扩展信息（JSON格式）
     */
    private String extraInfo;
}
